package controllers

import (
	"myproject/models"

	"github.com/astaxie/beego"
	"github.com/astaxie/beego/orm"
)

type OrmController struct {
	beego.Controller
}

func ormAddItem() {
	// 获取 orm 连接对象
	o := orm.NewOrm()
	// 需要添加数据对象实体
	user := models.User{}
	// 设置数据
	user.Name = "Tom"

	// 添加数据操作
	num, err := o.Insert(&user)

	if err != nil {
		beego.Info("添加数据失败", err)
		return
	}
	beego.Info("添加数据成功", num)
}

func ormDeleteItem() {
	o := orm.NewOrm()
	user := models.User{Id: 2}

	id, err := o.Delete(&user)
	if err != nil {
		beego.Info("删除失败", err)
		return
	}
	beego.Info("删除成功", id)
}

func ormUpdateItem() {
	o := orm.NewOrm()
	user := models.User{Id:2}
	err := o.Read(&user)
	if err != nil {
		beego.Info("查询数据失败", err)
		return
	}
	// 修改数据
	user.Name = "Jerry"
	// 更新操作
	_, err = o.Update(&user)
	if err != nil {
		beego.Info("更新失败", err)
		return
	}

	beego.Info("更新成功")
}

func ormQueryList() {
	// 获取 orm 链接对象
	o := orm.NewOrm()
	// 查询对象
	user := models.User{Id:2}
	// 执行查询操作
	err := o.Read(&user)

	if err != nil {
		beego.Info("查询数据失败", err)
		return
	}
	beego.Info("查询成功：", user.Name, user.Id)
}

func (o *OrmController) ShowOrm() {
	item := 2;
	if item == 1 {
		// 增
		ormAddItem();
		o.Ctx.WriteString("添加数据成功")
	} else if item == 2 {
		// 删
		ormDeleteItem()
		o.Ctx.WriteString("删除数据成功")
	} else if item == 3 {
		// 改
		ormUpdateItem()
		o.Ctx.WriteString("更新数据成功")
	} else {
		// 查
		ormQueryList()
		o.Ctx.WriteString("查询数据成功")
	}

}